Computer virtualization is a mechanism that permits to abstract different hardware parts of a computer platform and to execute different operating systems using the computer platform. In general terms, there may be several ways of virtualizing a computer platform. One commonly used way is based on a Virtual Machine Monitor (VMM), also referred to as a hypervisor. The hypervisor may be defined as a layer of software that provides to the virtual machine (VM) the illusion that it is running its own physical resources.
In general terms, Real Time Operating Systems (RTOS) provide a common ground to execute tasks or processes that has deadlines for when they need to be executed. Some example of such of tasks may include, but not limited to, control systems in industrial applications, multimedia applications, car control systems, and telecommunications control systems. In general terms, General-purpose Operating Systems (GTOS) may be used for generic purposes and may be generic to accommodate a variety of tasks.
Computer virtualization permits to run unmodified Operating Systems (OS) inside the host OS. This may generate some signalling and/or computational overhead since some devices of the computer platform need to be emulated. The guest OS, i.e., the operating system that runs on the virtualization environments, may use physical device drivers to interact with the emulated hardware provided by the VMM. The physical device drivers handle operations needed by the hardware, which might be complex operations. The device emulation may be required to provide the same interfaces and functionality as the real hardware. This may not be optimal because the physical device driver(s) and the emulated device(s) may need to perform operations that are not necessary if only performed in software. However, this procedure can be simplified or changed, since the underlying platform is emulated. The use of paravirtualization, where the device drivers are modified and where functions provided by the VMM or hypervisor are directly called (by using hypercalls) may overcome such issues. This may effectively reduce the overhead and may increase performance.
Containers define another technology that permits to isolate different tasks. Containers provide lightweight virtualization; the isolation is directly provided by the operating system, which isolates the tasks that belong to different containers.
Consider now a real-time networking architecture. In such real-time networking architectures there may be queuing schedulers that, for example, provide Quality of Service (QoS) differentiation. The so-called Differentiated-Services (DiffServ.) defined by IETF provides a marking scheme for delay differentiation (Class-of-Service) in routers. The most time-critical class Expedited Forwarding (EF) requires limited delays and is used to time-sensitive applications. Simple strict-priority schedulers can be used, but more advanced queuing schemes, such as deadline schedulers, have been suggested. However, the assignments of deadlines to packets of these time-sensitive applications are made internally within the router.
Certain radio access network (RAN) nodes, such as the enodeB in the Long Term Evolutional (LTE) telecommunications system may handle deadline scheduling. This is however mainly used for implementation of layer one (L1) and layer two (L2) signalling.
In “Towards Linux as a real-time hypervisor” by J. Kiszka in 11th Real Time Linux Workshop RTLWS11, 2009, Dresden, Germany, it is proposed to make KVMs (Kernel-based Virtual Machines) able to virtualize a Real Time system using the real time Linux kernel. KVM VMs use QEMU (Quick EMUlator) as emulator. Changing the priorities to RT can increase responsiveness. Also the kernel for the host is changed to be RT. Scheduler paravirtualization, which notifies the host when a VM needs to execute a RT process in order to boost its priority, is introduced. Kernel parameters are modified to obtain sub-millisecond latencies.
An architecture for executing RT tasks within VMs is presented in “Real-Time Multi-Core Virtual Machine Scheduling in Xen” by S. Xi, M. Xu, C. Lu, L. T. X. Phan, C. Gill, O. Sokolsky and I. Lee, Washington University Technical Report, WUCSE-2013-109, October 2013. A scheduler that permits to guarantee a certain amount of execution time for each VM is provided. The system administrator needs to specify the needs of the VMs. Inside the VM another scheduler is in charge of scheduling the different tasks.
Current approaches for handling different tasks in VMs are based on priorities, giving a boost to a specific VM when it requires finishing a task as soon as possible. This might help when running different workloads at the same time but it does not work well when all the VMs need to be prioritized at the same time. RT Xen is an open-source virtualization platform for systems integration and cloud computing with real-time performance guarantees. It provides soft guaranties for scheduling the VMs, but the system administrator needs to specify the characteristics of the workload.
Current scheduler mechanisms that use internal information from inside the VM do only provide hints that they need a higher priority but not the duration of such priority.
Further, networking packet queues are independent of the execution scheduling and thus the priority for such packets may not be settled yet.
Hence, there is still a need for an improved handling of tasks, such as real-time processes, to be executed on shared computing resources.